package org.os.framework.redis;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import org.springframework.core.annotation.AliasFor;

/**
 * 分布式锁
 * 
 * @author weizuxiao
 */
@Documented
@Retention(RetentionPolicy.RUNTIME) // 需添加此声明，否则运行时无法获取注解信息
@Target({ ElementType.METHOD })
public @interface RedissonLock {

    /**
     * 前缀
     * 
     * @return
     */
    @AliasFor("name")
    String value() default "";

    /**
     * 前缀
     * @return
     */
    @AliasFor("value")
    String name() default "";

    /**
     * spel表达式，#params.name
     * 
     * @return
     */
    String key() default "";

    /**
     * 是否快速失败
     * 
     * @return
     */
    boolean fastFailure() default false;

    /**
     * 失败提示
     * 
     * @return
     */
    String message() default "";
}
